package br.com.rglariguet.tattoo.controller;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import br.com.rglariguet.tattoo.dao.PerfilDAO;
import br.com.rglariguet.tattoo.dao.UsuarioDAO;
import br.com.rglariguet.tattoo.enums.StatusReparoAdminEnum;
import br.com.rglariguet.tattoo.modelos.Perfil;
import br.com.rglariguet.tattoo.modelos.Usuario;

@Controller
@SessionAttributes("usuarioLogado")
public class LoginController{
	
	
	@Autowired
	private UsuarioDAO usuarioDAO; 
	@Autowired
	private PerfilDAO perfilDAO; 

	@RequestMapping("/mudaLingua")
	public String index(String lingua, HttpSession session){
	    Locale locale = new Locale(lingua);
	    Config.set(session, Config.FMT_LOCALE, locale);
	    Config.set(session, Config.FMT_FALLBACK_LOCALE, locale);
	    return "/usuarios/login-form";
	}
	
	@RequestMapping("/seguro/inicio")
	public String index(ModelMap model){
		Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
		model.addAttribute("usuarioLogado", user.getNome());
		return "/seguro/index";
	}
	
     
	@RequestMapping("/login-form")
	public String login(HttpSession session){
		Locale locale = new Locale("pt", "BR");
		Config.set(session, Config.FMT_LOCALE, locale);
	    Config.set(session, Config.FMT_FALLBACK_LOCALE, locale);
		return "/usuarios/login-form";
	}
	
	@RequestMapping("/loginerror")
	public String loginError(ModelMap model){
		model.addAttribute("erroLogin","Erro ao logar");
		return "/usuarios/login-form";
	}
	
	@RequestMapping("/addFUNC")
	public String addOem(){
		
		Perfil perfil = new Perfil();
		perfil.setNome("ROLE_FUNC");
		Perfil perfilSalvo = perfilDAO.salvar(perfil);
		List<Perfil> perfis = new ArrayList<Perfil>();
		perfis.add(perfilSalvo);
		
		Usuario usuario = new Usuario();
		usuario.setNome("Senhor Funcionario");
		usuario.setLogin("func");
		usuario.setSenha("func");
		usuario.setPerfis(perfis);
		usuarioDAO.salvar(usuario );
		return "/usuarios/login-form";
	}
	
	
	@RequestMapping("/addADM")
	public String addAsc(){
		
		Perfil perfil = new Perfil();
		perfil.setNome("ROLE_ADM");
		Perfil perfilSalvo = perfilDAO.salvar(perfil);
		List<Perfil> perfis = new ArrayList<Perfil>();
		perfis.add(perfilSalvo);
		
		Usuario usuario = new Usuario();
		usuario.setNome("Senhor Administrador");
		usuario.setLogin("admmn");
		usuario.setSenha("admin");
		usuario.setPerfis(perfis);
		usuarioDAO.salvar(usuario );
		return "/usuarios/login-form";
	}
}
